	
	var Geco = {Utils:{}};
	
	/**
	 * Recupera valor da propriedade especidade dentro do objeto
	 */
	Geco.Utils.getProperty = function(object, property) {
		if(!property) return object;
		var properties = property.split('.');
		var currentPath = '';
		for ( var i = 0; i < properties.length; i++) {
			currentPath += properties[i];
			if(!object)return;
			object = object[properties[i]];
		}
		return object;
	};
	
	/**
	 * Verifica se propriedade especificada existe no objeto
	 */
	Geco.Utils.containsProperty = function(object, property) {
		var lastIndexOf = property.lastIndexOf(".");
		var lastObjectProperty = lastIndexOf >= 0 ? property.slice(0,lastIndexOf): "";
		var lastProperty = property.slice(lastIndexOf < 0 ? 0: lastIndexOf+1,property.length);
		var o = lastObjectProperty ? Geco.Utils.getProperty(object, lastObjectProperty) : object;
		return o != undefined && o.hasOwnProperty(lastProperty);
	};
	
	/**
	 * Fun��o para popular form com base em um objeto que armazena os dados.
	 * O caracter '.' � usado para navegar no objeto. O atributo name do elemento
	 * html deve apresentar o caminho para a propriedade dentro do objeto
	 */
	Geco.Utils.populate = function(formId, object, force) {
		
		if(!formId)alert('Populate: formId is null.');
		if(!object)alert('Populate: object is null.');
		
		function setValue(element){
			var value = Geco.Utils.getProperty(object, element.name) || '';
			if(force || value || value != 0)
				jQuery(element).val(value);
		}
		
		var selectors = [":text",":hidden",":password","textarea",":radio","select"];
		
		var form = jQuery("#"+formId);
		
		for ( var int = 0; int < selectors.length; int++) {
			jQuery(selectors[int],form).each(function(i){			
				setValue(this);
			});
		}
		
	};
	
	Geco.Utils.alert = function(message) {
	
		var div = jQuery("<div></div>").attr({id:"geco-generic-dialog",title:"Mensagem"});
		var p = jQuery("<p></p>").text(message);
		div.append(p);
		jQuery(document).append(div);
		div.dialog({
			modal:true,
			close: function(event, ui){
				div.remove();
			}
		});
		
	};	
	